语音合成大模型API列表
根据具体场景选择合适的语音合成大模型API。 :::warning 大模型音色都推荐接入V3接口,时延上的表现会更好 :::
| | | | | \
| 接口 | 推荐场景 | 接口功能 | 文档链接 |
|---|---|---|---|
wss://openspeech.bytedance.com/api/v3/tts/bidirection | WebSocket协议,实时交互场景,支持文本实时流式输入,流式输出音频。 | 语音合成、声音复刻、混音 | V3 WebSocket双向流式文档 |
wss://openspeech.bytedance.com/api/v3/tts/unidirectional/stream | WebSocket协议,一次性输入合成文本,流式输出音频。 | 语音合成、声音复刻、混音 | V3 WebSocket单向流式文档 |
https://openspeech.bytedance.com/api/v3/tts/unidirectional | HTTP协议,一次性输入全部合成文本,流式输出音频。 | 语音合成、声音复刻、混音 | V3 HTTP Chunked单向流式文档 |
https://openspeech.bytedance.com/api/v3/tts/unidirectional/sse | HTTP协议,一次性输入全部合成文本,流式输出音频。 | 语音合成、声音复刻、混音 | V3 Server Sent Events(SSE)单向流式文档 |
wss://openspeech.bytedance.com/api/v1/tts/ws_binary | 不推荐,WebSocket协议,一次性输入合成文本,流式输出音频。 | 语音合成、声音复刻、不支持混音 | V1 WebSocket单向流式接口文档 |
https://openspeech.bytedance.com/api/v1/tts | 不推荐,HTTP协议,一次性输入合成文本,一次性输出音频。 | 语音合成、声音复刻、不支持混音 | V1 HTTP非流式接口文档 |
WebSocket
使用账号申请部分申请到的 appid&access_token 进行调用 文本一次性送入,后端边合成边返回音频数据
1. 接口说明
接口地址为wss://openspeech.bytedance.com/api/v1/tts/ws_binary
2. 身份认证
认证方式使用 Bearer Token,在请求的 header 中加上"Authorization": "Bearer; {token}",并在请求的 json 中填入对应的 appid。
:::warning
Bearer 和 token 使用分号 ; 分隔,替换时请勿保留{}
:::
AppID/Token/Cluster 等信息可参考 控制台使用FAQ-Q1
3. 请求方式
3.1 二进制协议
报文格式(Message format)
 所有字段以 Big Endian(大端序) 的方式存储。 字段描述
| | | | \
| 字段 Field (大小, 单位 bit) | 描述 Description | 值 Values |
|---|---|---|
| 协议版本(Protocol version) (4) | 可能会在将来使用不同的协议版本,所以这个字段是为了让客户端和服务器在版本上保持一致。 | 0b0001 - 版本 1 (目前只有版本 1) |
| 报头大小(Header size) (4) | header 实际大小是 header size value x 4 bytes. | \ |
这里有个特殊值 0b1111 表示 header 大小大于或等于 60(15 x 4 bytes),也就是会存在 header extension 字段。 | 0b0001 - 报头大小 = 4 (1 x 4) | |
0b0010 - 报头大小 = 8 (2 x 4) | ||
0b1010 - 报头大小 = 40 (10 x 4) | ||
0b1110 - 报头大小 = 56 (14 x 4) | ||
0b1111 - 报头大小为 60 或更大; 实际大小在 header extension 中定义 | ||
| 消息类型(Message type) (4) | 定义消息类型。 | 0b0001 - full client request. |
~~0b1001~~ | ||
0b1011 - Audio-only server response (ACK). | ||
0b1111 - Error message from server (例如错误的消息类型,不支持的序列化方法等等) | ||
| Message type specific flags (4) | flags 含义取决于消息类型。 | \ |
| 具体内容请看消息类型小节. | ||
| 序列化方法(Message serialization method) (4) | 定义序列化 payload 的方法。 | \ |
注意:它只对某些特定的消息类型有意义 (例如 Audio-only server response 0b1011 就不需要序列化). | 0b0000 - 无序列化 (raw bytes) | |
0b0001 - JSON | ||
0b1111 - 自定义类型, 在 header extension 中定义 | ||
| 压缩方法(Message Compression) (4) | 定义 payload 的压缩方法。 | \ |
| Payload size 字段不压缩(如果有的话,取决于消息类型),而且 Payload size 指的是 payload 压缩后的大小。 | \ | |
| Header 不压缩。 | 0b0000 - 无压缩 | |
0b0001 - gzip | ||
0b1111 - 自定义压缩方法, 在 header extension 中定义 | ||
| 保留字段(Reserved) (8) | 保留字段,同时作为边界 (使整个报头大小为 4 个字节). | 0x00 - 目前只有 0 |
消息类型详细说明
目前所有 TTS websocket 请求都使用 full client request 格式,无论”query”还是”submit”。
Full client request
- Header size为
b0001(即 4B,没有 header extension)。 - Message type为
b0001. - Message type specific flags 固定为
b0000. - Message serialization method为
b0001JSON。字段参考上方表格。 - 如果使用 gzip 压缩 payload,则 payload size 为压缩后的大小。
Audio-only server response
- Header size 应该为
b0001. - Message type为
b1011. - Message type specific flags 可能的值有:
b0000- 没有 sequence number.b0001- sequence number > 0.b0010orb0011- sequence number < 0,表示来自服务器的最后一条消息,此时客户端应合并所有音频片段(如果有多条)。
- Message serialization method为
b0000(raw bytes).
4.注意事项
- 每次合成时reqid这个参数需要重新设置,且要保证唯一性(建议使用uuid.V4生成)
- websocket demo中单条链接仅支持单次合成,若需要合成多次,需自行实现。每次创建websocket连接后,按顺序串行发送每一包。一次合成结束后,可以发送新的合成请求。
- operation需要设置为submit才是流式返回
- 在 websocket 握手成功后,会返回这些 Response header
- 不支持”豆包语音合成模型2.0”的音色 ,比如:“zh_female_vv_uranus_bigtts”,如需使用推荐使用v3 接口
| | | | \
| Key | 说明 | Value 示例 |
|---|---|---|
| X-Tt-Logid | 服务端返回的 logid,建议用户获取和打印方便定位问题 | 202407261553070FACFE6D19421815D605 |
5.调用示例
return (<Tabs>
<Tabs.TabPane title="Python调用示例" key="buVUUlzaRC"><RenderMd content={`<span id="fccb89b1"></span>
### 前提条件
* 调用之前,您需要获取以下信息:
* \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。
<span id="824abc9d"></span>
### Python环境
* Python:3.9版本及以上。
* Pip:25.1.1版本及以上。您可以使用下面命令安装。
\`\`\`Bash
python3 -m pip install --upgrade pip
\`\`\`
<span id="5cbec8af"></span>
### 下载代码示例
<Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/90fc1f44eaac49f0b4e2cbabdaee8010~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment>
<span id="44d95afb"></span>
### 解压缩代码包,安装依赖
\`\`\`Bash
mkdir -p volcengine_binary_demo
tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo
cd volcengine_binary_demo
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
pip3 install -e .
\`\`\`
<span id="fdf69422"></span>
### 发起调用
> \`<appid>\`替换为您的APP ID。
> \`<access_token>\`替换为您的Access Token。
> \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。
\`\`\`Bash
python3 examples/volcengine/binary.py --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "你好,我是火山引擎的语音合成服务。这是一个美好的旅程。"
\`\`\`
`}></RenderMd></Tabs.TabPane>
<Tabs.TabPane title="Java调用示例" key="bfjarx0zlZ"><RenderMd content={`<span id="e0bca07e"></span>
### 前提条件
* 调用之前,您需要获取以下信息:
* \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。
<span id="5f338843"></span>
### Java环境
* Java:21版本及以上。
* Maven:3.9.10版本及以上。
<span id="96af51fa"></span>
### 下载代码示例
<Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/ba78519b2dc0459fb7a6935b63775c66~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment>
<span id="8e0ecd00"></span>
### 解压缩代码包,安装依赖
\`\`\`Bash
mkdir -p volcengine_binary_demo
tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo
cd volcengine_binary_demo
\`\`\`
<span id="fa0a6230"></span>
### 发起调用
> \`<appid>\`替换为您的APP ID。
> \`<access_token>\`替换为您的Access Token。
> \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。
\`\`\`Bash
mvn compile exec:java -Dexec.mainClass=com.speech.volcengine.Binary -DappId=<appid> -DaccessToken=<access_token> -Dvoice=<voice_type> -Dtext="**你好**,我是豆包语音助手,很高兴认识你。这是一个愉快的旅程。"
\`\`\`
`}></RenderMd></Tabs.TabPane>
<Tabs.TabPane title="Go调用示例" key="s8zQJ7cCr3"><RenderMd content={`<span id="2733f4d4"></span>
### 前提条件
* 调用之前,您需要获取以下信息:
* \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。
<span id="ee9617a6"></span>
### Go环境
* Go:1.21.0版本及以上。
<span id="cf9bb2bf"></span>
### 下载代码示例
<Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/c553a4a4373840d4a4870a1ef2a4e494~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment>
<span id="363963c4"></span>
### 解压缩代码包,安装依赖
\`\`\`Bash
mkdir -p volcengine_binary_demo
tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo
cd volcengine_binary_demo
\`\`\`
<span id="f0acb02c"></span>
### 发起调用
> \`<appid>\`替换为您的APP ID。
> \`<access_token>\`替换为您的Access Token。
> \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。
\`\`\`Bash
go run volcengine/binary/main.go --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,我是火山引擎的语音合成服务。"
\`\`\`
`}></RenderMd></Tabs.TabPane>
<Tabs.TabPane title="C#调用示例" key="Thg5rLaSjq"><RenderMd content={`<span id="c60c1d5f"></span>
### 前提条件
* 调用之前,您需要获取以下信息:
* \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。
<span id="cf2199fe"></span>
### C#环境
* .Net 9.0版本。
<span id="f7e91692"></span>
### 下载代码示例
<Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/a95ff3e7604d4bb4ade8fb49e110fef5~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment>
<span id="f9131897"></span>
### 解压缩代码包,安装依赖
\`\`\`Bash
mkdir -p volcengine_binary_demo
tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo
cd volcengine_binary_demo
\`\`\`
<span id="5834585b"></span>
### 发起调用
> \`<appid>\`替换为您的APP ID。
> \`<access_token>\`替换为您的Access Token。
> \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。
\`\`\`Bash
dotnet run --project Volcengine/Binary/Volcengine.Speech.Binary.csproj -- --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,这是一个测试文本。我们正在测试文本转语音功能。"
\`\`\`
`}></RenderMd></Tabs.TabPane>
<Tabs.TabPane title="TypeScript调用示例" key="p1GEs3rWU7"><RenderMd content={`<span id="8b865031"></span>
### 前提条件
* 调用之前,您需要获取以下信息:
* \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。
* \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。
<span id="e7697c4e"></span>
### node环境
* node:v24.0版本及以上。
<span id="03fe45f1"></span>
### 下载代码示例
<Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/12ef1b1188a84f0c8883a0114da741ad~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment>
<span id="13e8a71a"></span>
### 解压缩代码包,安装依赖
\`\`\`Bash
mkdir -p volcengine_binary_demo
tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo
cd volcengine_binary_demo
npm install
npm install -g typescript
npm install -g ts-node
\`\`\`
<span id="0c57973f"></span>
### 发起调用
> \`<appid>\`替换为您的APP ID。
> \`<access_token>\`替换为您的Access Token。
> \`<voice_type>\`替换为您预期使用的音色ID,例如\`<voice_type>\`。
\`\`\`Bash
npx ts-node src/volcengine/binary.ts --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,我是火山引擎的语音合成服务。"
\`\`\`
`}></RenderMd></Tabs.TabPane></Tabs>);
参数列表
请求参数
| | | | | | | \
| 字段 | 含义 | 层级 | 格式 | 必需 | 备注 |
|---|---|---|---|---|---|
| app | 应用相关配置 | 1 | dict | ✓ | |
| appid | 应用标识 | 2 | string | ✓ | 需要申请 |
| token | 应用令牌 | 2 | string | ✓ | 无实际鉴权作用的Fake token,可传任意非空字符串 |
| cluster | 业务集群 | 2 | string | ✓ | volcano_tts |
| user | 用户相关配置 | 1 | dict | ✓ | |
| uid | 用户标识 | 2 | string | ✓ | 可传任意非空字符串,传入值可以通过服务端日志追溯 |
| audio | 音频相关配置 | 1 | dict | ✓ | |
| voice_type | 音色类型 | 2 | string | ✓ | |
| emotion | 音色情感 | 2 | string | 设置音色的情感。示例:“emotion”: “angry” | |
| 注:当前仅部分音色支持设置情感,且不同音色支持的情感范围存在不同。 | |||||
| 详见:大模型语音合成API-音色列表-多情感音色 | |||||
| enable_emotion | 开启音色情感 | 2 | bool | 是否可以设置音色情感,需将enable_emotion设为true | |
| 示例:“enable_emotion”: True | |||||
| emotion_scale | 情绪值设置 | 2 | float | 调用emotion设置情感参数后可使用emotion_scale进一步设置情绪值,范围1~5,不设置时默认值为4。 | |
| 注:理论上情绪值越大,情感越明显。但情绪值1~5实际为非线性增长,可能存在超过某个值后,情绪增加不明显,例如设置3和5时情绪值可能接近。 | |||||
| encoding | 音频编码格式 | 2 | string | wav / pcm / ogg_opus / mp3,默认为 pcm | |
| 注意:wav 不支持流式 | |||||
| speed_ratio | 语速 | 2 | float | [0.1,2],默认为 1,通常保留一位小数即可 | |
| rate | 音频采样率 | 2 | int | 默认为 24000,可选8000,16000 | |
| bitrate | 比特率 | 2 | int | 单位 kb/s,默认160 kb/s | |
| 注: | |||||
| bitrate只针对MP3格式,wav计算比特率跟pcm一样是 比特率 (bps) = 采样率 × 位深度 × 声道数 | |||||
| 目前大模型TTS只能改采样率,所以对于wav格式来说只能通过改采样率来变更音频的比特率 | |||||
| explicit_language | 明确语种 | 2 | string | 仅读指定语种的文本 | |
| 精品音色和 ICL 声音复刻场景: | |||||
| * 不给定参数,正常中英混 | |||||
* crosslingual 启用多语种前端(包含zh/en/ja/es-ms/id/pt-br) | |||||
* zh-cn 中文为主,支持中英混 | |||||
* en 仅英文 | |||||
* ja 仅日文 | |||||
* es-mx 仅墨西 | |||||
* id 仅印尼 | |||||
* pt-br 仅巴葡 | |||||
| DIT 声音复刻场景: | |||||
| 当音色是使用model_type=2训练的,即采用dit标准版效果时,建议指定明确语种,目前支持: | |||||
* 不给定参数,启用多语种前端zh,en,ja,es-mx,id,pt-br,de,fr | |||||
* zh,en,ja,es-mx,id,pt-br,de,fr 启用多语种前端 | |||||
* zh-cn 中文为主,支持中英混 | |||||
* en 仅英文 | |||||
* ja 仅日文 | |||||
* es-mx 仅墨西 | |||||
* id 仅印尼 | |||||
* pt-br 仅巴葡 | |||||
* de 仅德语 | |||||
* fr 仅法语 | |||||
| 当音色是使用model_type=3训练的,即采用dit还原版效果时,必须指定明确语种,目前支持: | |||||
| * 不给定参数,正常中英混 | |||||
* zh-cn 中文为主,支持中英混 | |||||
* en 仅英文 | |||||
| context_language | 参考语种 | 2 | string | 给模型提供参考的语种 | |
| * 不给定 西欧语种采用英语 | |||||
| * id 西欧语种采用印尼 | |||||
| * es 西欧语种采用墨西 | |||||
| * pt 西欧语种采用巴葡 | |||||
| loudness_ratio | 音量调节 | 2 | float | [0.5,2],默认为1,通常保留一位小数即可。0.5代表原音量0.5倍,2代表原音量2倍 | |
| request | 请求相关配置 | 1 | dict | ✓ | |
| reqid | 请求标识 | 2 | string | ✓ | 需要保证每次调用传入值唯一,建议使用 UUID |
| text | 文本 | 2 | string | ✓ | 合成语音的文本,长度限制 1024 字节(UTF-8 编码)建议小于300字符,超出容易增加badcase出现概率或报错 |
| model | 模型版本 | \ | |||
| 2 | \ | ||||
| string | 否 | 模型版本,传seed-tts-1.1较默认版本音质有提升,并且延时更优,不传为默认效果。 | |||
| 注:若使用1.1模型效果,在复刻场景中会放大训练音频prompt特质,因此对prompt的要求更高,使用高质量的训练音频,可以获得更优的音质效果。 | |||||
| text_type | 文本类型 | 2 | string | 使用 ssml 时需要指定,值为”ssml” | |
| silence_duration | 句尾静音 | 2 | float | 设置该参数可在句尾增加静音时长,范围0~30000ms。(注:增加的句尾静音主要针对传入文本最后的句尾,而非每句话的句尾)若启用该参数,必须在request下首先设置enable_trailing_silence_audio = true | |
| with_timestamp | 时间戳相关 | 2 | int | \ | |
| string | 传入1时表示启用,将返回TN后文本的时间戳,例如:2025。根据语义,TN后文本为“两千零二十五”或“二零二五”。 | ||||
| 注:原文本中的多个标点连用或者空格仍会被处理,但不影响时间戳的连贯性(仅限大模型场景使用)。 | |||||
| 附加说明(小模型和大模型时间戳原理差异): | |||||
| 1. 小模型依据前端模型生成时间戳,然后合成音频。在处理时间戳时,TN前后文本进行了映射,所以小模型可返回TN前原文本的时间戳,即保留原文中的阿拉伯数字或者特殊符号等。 | |||||
| 2. 大模型在对传入文本语义理解后合成音频,再针对合成音频进行TN后打轴以输出时间戳。若不采用TN后文本,输出的时间戳将与合成音频无法对齐,所以大模型返回的时间戳对应TN后的文本。 | |||||
| operation | 操作 | 2 | string | ✓ | query(非流式,http 只能 query) / submit(流式) |
| extra_param | 附加参数 | 2 | jsonstring | ||
| disable_markdown_filter | 3 | bool | 是否开启markdown解析过滤, | ||
| 为true时,解析并过滤markdown语法,例如,你好,会读为“你好”, | |||||
| 为false时,不解析不过滤,例如,你好,会读为“星星‘你好’星星” | |||||
| 示例:“disable_markdown_filter”: True | |||||
| enable_latex_tn | 3 | bool | 是否可以播报latex公式,需将disable_markdown_filter设为true | ||
| 示例:“enable_latex_tn”: True | |||||
| latex_parser | \ | ||||
| 3 | string | 是否使用lid 能力播报latex公式,相较于latex_tn 效果更好; | |||
| 值为“v2”时支持lid能力解析公式,值为“”时不支持lid; | |||||
| 需同时将disable_markdown_filter设为true; | |||||
| mute_cut_remain_ms | 句首静音参数 | 3 | string | 该参数需配合mute_cut_threshold参数一起使用,其中: | |
| “mute_cut_threshold”: “400”, // 静音判断的阈值(音量小于该值时判定为静音) | |||||
| “mute_cut_remain_ms”: “50”, // 需要保留的静音长度 | |||||
| 注:参数和value都为string格式 | |||||
| 以python为示例: | |||||
| ```Python | |||||
| “extra_param”:(”{“mute_cut_threshold”:“400”, “mute_cut_remain_ms”: “0”}”) | |||||
| ``` | |||||
| 特别提醒: | |||||
| * 因MP3格式的特殊性,句首始终会存在100ms内的静音无法消除,WAV格式的音频句首静音可全部消除,建议依照自身业务需求综合判断选择 | |||||
| disable_emoji_filter | emoji不过滤显示 | 3 | bool | 开启emoji表情在文本中不过滤显示,默认为False,建议搭配时间戳参数一起使用。 | |
Python示例:"extra_param": json.dumps({"disable_emoji_filter": True}) | |||||
| unsupported_char_ratio_thresh | 不支持语种占比阈值 | 3 | float | 默认: 0.3,最大值: 1.0 | |
| 检测出不支持合成的文本超过设置的比例,则会返回错误。 | |||||
Python示例:"extra_param": json.dumps({"unsupported_char_ratio_thresh": 0.3}) | |||||
| aigc_watermark | 是否在合成结尾增加音频节奏标识 | 3 | bool | 默认: false | |
Python示例:"extra_param": json.dumps({"aigc_watermark": True}) | |||||
| cache_config | 缓存相关参数 | 3 | dict | 开启缓存,开启后合成相同文本时,服务会直接读取缓存返回上一次合成该文本的音频,可明显加快相同文本的合成速率,缓存数据保留时间1小时。 | |
| (通过缓存返回的数据不会附带时间戳) | |||||
Python示例:"extra_param": json.dumps({"cache_config": {"text_type": 1,"use_cache": True}}) | |||||
| text_type | 缓存相关参数 | 4 | int | 和use_cache参数一起使用,需要开启缓存时传1 | |
| use_cache | 缓存相关参数 | 4 | bool | 和text_type参数一起使用,需要开启缓存时传true |
备注:
- 已支持字级别时间戳能力(ssml文本类型不支持)
- ssml 能力已支持,详见 SSML 标记语言—豆包语音-火山引擎 (volcengine.com)
- 暂时不支持音高调节
- 大模型音色语种支持中英混
- 大模型非双向流式已支持latex公式
- 在 websocket/http 握手成功后,会返回这些 Response header
| | | | \
| Key | 说明 | Value 示例 |
|---|---|---|
| X-Tt-Logid | 服务端返回的 logid,建议用户获取和打印方便定位问题,使用默认格式即可,不要自定义格式 | 202407261553070FACFE6D19421815D605 |
请求示例:
{
"app": {
"appid": "appid123",
"token": "access_token",
"cluster": "volcano_tts",
},
"user": {
"uid": "uid123"
},
"audio": {
"voice_type": "zh_male_M392_conversation_wvae_bigtts",
"encoding": "mp3",
"speed_ratio": 1.0,
},
"request": {
"reqid": "uuid",
"text": "字节跳动语音合成",
"operation": "query",
}
}
返回参数
| | | | | | \
| 字段 | 含义 | 层级 | 格式 | 备注 |
|---|---|---|---|---|
| reqid | 请求 ID | 1 | string | 请求 ID,与传入的参数中 reqid 一致 |
| code | 请求状态码 | 1 | int | 错误码,参考下方说明 |
| message | 请求状态信息 | 1 | string | 错误信息 |
| sequence | 音频段序号 | 1 | int | 负数表示合成完毕 |
| data | 合成音频 | 1 | string | 返回的音频数据,base64 编码 |
| addition | 额外信息 | 1 | string | 额外信息父节点 |
| duration | 音频时长 | 2 | string | 返回音频的长度,单位 ms |
响应示例
{
"reqid": "reqid",
"code": 3000,
"operation": "query",
"message": "Success",
"sequence": -1,
"data": "base64 encoded binary data",
"addition": {
"duration": "1960",
}
}
注意事项
- websocket 单条链接仅支持单次合成,若需要合成多次,则需要多次建立链接
- 每次合成时 reqid 这个参数需要重新设置,且要保证唯一性(建议使用 uuid.V4 生成)
- operation 需要设置为 submit
返回码说明
| | | | | \
| 错误码 | 错误描述 | 举例 | 建议行为 |
|---|---|---|---|
| 3000 | 请求正确 | 正常合成 | 正常处理 |
| 3001 | 无效的请求 | 一些参数的值非法,比如 operation 配置错误 | 检查参数 |
| 3003 | 并发超限 | 超过在线设置的并发阈值 | 重试;使用 sdk 的情况下切换离线 |
| 3005 | 后端服务忙 | 后端服务器负载高 | 重试;使用 sdk 的情况下切换离线 |
| 3006 | 服务中断 | 请求已完成/失败之后,相同 reqid 再次请求 | 检查参数 |
| 3010 | 文本长度超限 | 单次请求超过设置的文本长度阈值 | 检查参数 |
| 3011 | 无效文本 | 参数有误或者文本为空、文本与语种不匹配、文本只含标点 | 检查参数 |
| 3030 | 处理超时 | 单次请求超过服务最长时间限制 | 重试或检查文本 |
| 3031 | 处理错误 | 后端出现异常 | 重试;使用 sdk 的情况下切换离线 |
| 3032 | 等待获取音频超时 | 后端网络异常 | 重试;使用 sdk 的情况下切换离线 |
| 3040 | 后端链路连接错误 | 后端网络异常 | 重试 |
| 3050 | 音色不存在 | 检查使用的 voice_type 代号 | 检查参数 |
常见错误返回说明
- 错误返回: “message”: “quota exceeded for types: xxxxxxxxx_lifetime” 错误原因:试用版用量用完了,需要开通正式版才能继续使用
- 错误返回: “message”: “quota exceeded for types: concurrency” 错误原因:并发超过了限定值,需要减少并发调用情况或者增购并发
- 错误返回: “message”: “Fail to feed text, reason Init Engine Instance failed” 错误原因:voice_type / cluster 传递错误
- 错误返回: “message”: “illegal input text!” 错误原因:传入的 text 无效,没有可合成的有效文本。比如全部是标点符号或者 emoji 表情,或者使用中文音色时,传递日语,以此类推。多语种音色,也需要使用 language 指定对应的语种
- 错误返回: “message”: “authenticate request: load grant: requested grant not found” 错误原因:鉴权失败,需要检查 appid&token 的值是否设置正确,同时,鉴权的正确格式为 headers[“Authorization”] = “Bearer;${token}”
- 错误返回: “message’: ‘extract request resource id: get resource id: access denied” 错误原因:语音合成已开通正式版且未拥有当前音色授权,需要在控制台购买该音色才能调用。标注免费的音色除 BV001_streaming 及 BV002_streaming 外,需要在控制台进行下单(支付 0 元)
Last updated on